package com.zline.foodraise.http;

import android.content.Context;

import com.google.gson.JsonObject;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.zline.foodraise.constant.Constant;
import com.zline.foodraise.entity.AppPref_;
import com.zline.foodraise.util.FileUtils;

import org.androidannotations.annotations.EBean;
import org.androidannotations.annotations.RootContext;
import org.androidannotations.annotations.sharedpreferences.Pref;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * Created by heshantao on 15/7/20.
 * 网络请求操作类
 */
@EBean
public class HttpOperator {
    private static final String LOG_TAG = HttpOperator.class.getSimpleName();
    @RootContext
    Context cxt;
    @Pref
    AppPref_ appPref;

    //添加token
    void addToken(HttpUtil httpUtil) {
        String token = appPref.token().get();
        httpUtil.addHeader(Constant.ACCESS_TOKEN, token);
    }

    /*
    * 请求用户关注列表
    * @paramer httpUtil 网络请求工具类
    * @paramer userId 用户Id
    * @paramer pageRows 每页显示记录数
    * @paramer curPage 当前页数
    * @paramer responseHandler 请求结果回调
    * */
    public void getUerAttentionList(HttpUtil httpUtil, long userId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/userRelation/getUserAttentionList";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 请求用户粉丝列表
   * @paramer httpUtil 网络请求工具类
   * @paramer userId 用户Id
   * @paramer pageRows 每页显示记录数
   * @paramer curPage 当前页数
   * @paramer responseHandler 请求结果回调
   * */
    public void getUerFansList(HttpUtil httpUtil, long userId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/userRelation/getUserFansList";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 更改关注状态
   * @paramer httpUtil 网络请求工具类
   * @paramer toUserId 所要操作的用户Id
   * @paramer operateType 操作类型,1关注0取消关注
   * @paramer responseHandler 请求结果回调
   * */
    public void changeAttentionStatus(HttpUtil httpUtil, long toUserId, int operateType, AsyncHttpResponseHandler responseHandler) {
        String url = "/userRelation/operateRelation";
        RequestParams params = new RequestParams();
        params.put(Constant.TO_USER_ID, toUserId);
        params.put(Constant.OPERATE_TYPE, operateType);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 发送验证码
    * @paramer httpUtil 网络请求工具类
    * @paramer mobile 用户手机号
    * @paramer responseHandler 请求结果回调
    * */
    public void sendAuthCode(HttpUtil httpUtil, String mobile, AsyncHttpResponseHandler responseHandler) {
        String url = "/login/sendValiCode";
        RequestParams params = new RequestParams();
        params.put(Constant.MOBILE, mobile);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);//将参数转化为 JSON 传递
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 发送语言验证码
   * @paramer httpUtil 网络请求工具类
   * @paramer mobile 用户手机号
   * @paramer responseHandler 请求结果回调
   * */
    public void sendVoiceAuthCode(HttpUtil httpUtil, String mobile, AsyncHttpResponseHandler responseHandler) {
        String url = "/login/sendVoiceValiCode";
        RequestParams params = new RequestParams();
        params.put(Constant.MOBILE, mobile);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);//将参数转化wei JSON 传递
        httpUtil.post(url, params, responseHandler);
    }


    /*
  * 登录
  * @paramer httpUtil 网络请求工具类
  * @paramer mobile 用户手机号
  * @paramer authCode 验证码
  * @paramer responseHandler 请求结果回调
  * */
    public void login(HttpUtil httpUtil, String mobile, String authCode, AsyncHttpResponseHandler responseHandler) {
        String url = "/login/login";
        RequestParams params = new RequestParams();
        params.put(Constant.MOBILE, mobile);
        params.put(Constant.AUTH_CODE, authCode);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);//将参数转化wei JSON 传递
        httpUtil.post(url, params, responseHandler);
    }


    /*
  * 请求用户的商品列表
  * @paramer httpUtil 网络请求工具类
  * @paramer userId 用户Id
  * @paramer pageRows 每页显示记录数
  * @paramer curPage 当前页数
  * @paramer responseHandler 请求结果回调
  * */
    public void requestProductListForUser(HttpUtil httpUtil, long userId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/getProductListForUser";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 请求用户的关注项目列表
    * @paramer httpUtil 网络请求工具类
    * @paramer userId 用户Id
    * @paramer pageRows 每页显示记录数
    * @paramer curPage 当前页数
    * @paramer responseHandler 请求结果回调
    * */
    public void requestAttentionProjectListForUser(HttpUtil httpUtil, long userId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/getAttentionProjectListForUser";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
    * 请求用户的参与项目列表
    * @paramer httpUtil 网络请求工具类
    * @paramer userId 用户Id
    * @paramer pageRows 每页显示记录数
    * @paramer curPage 当前页数
    * @paramer responseHandler 请求结果回调
    * */
    public void requestJoinProjectListForUser(HttpUtil httpUtil, long userId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/getBoughtProjectListForUser";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 请求用户的基本信息
    * @paramer httpUtil 网络请求工具类
    * @paramer userId 用户Id
    * @paramer responseHandler 请求结果回调
    * */
    public void requestUserInfo(HttpUtil httpUtil, long userId, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/getUserInfo";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 修改个性签名
   * @paramer httpUtil 网络请求工具类
   * @paramer signature 签名
   * @paramer responseHandler 请求结果回调
   * */
    public void requstModifySignature(HttpUtil httpUtil, String signature, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/editUser";
        RequestParams params = new RequestParams();
        params.put(Constant.SIGNATURE, signature);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
  * 修改个人说明
  * @paramer httpUtil 网络请求工具类
  * @paramer declare 个人说明
  * @paramer responseHandler 请求结果回调
  * */
    public void requstModifyPersonalDeclare(HttpUtil httpUtil, String declare, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/editUser";
        RequestParams params = new RequestParams();
        params.put(Constant.PERSONAL_DECLARE, declare);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
* 修改个人性别
* @paramer httpUtil 网络请求工具类
* @paramer sex 性别,1男 0女
* @paramer responseHandler 请求结果回调
* */
    public void requstModifyPersonalSex(HttpUtil httpUtil, int sex, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/editUser";
        RequestParams params = new RequestParams();
        params.put(Constant.SEX, sex);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
  * 获取筹钱包余额
  * @paramer httpUtil 网络请求工具类
  * @paramer userId 用户Id
  * @paramer responseHandler 请求结果回调
  * */
    public void requstWalletBalance(HttpUtil httpUtil, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/getWalletBalance";
        RequestParams params = new RequestParams();
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
 * 获取店铺申请状态
 * @paramer httpUtil 网络请求工具类
 * @paramer userId 用户Id
 * @paramer responseHandler 请求结果回调
 * */
    public void requstShopApplyInfo(HttpUtil httpUtil, long userId, AsyncHttpResponseHandler responseHandler) {
        String url = "/shopApply/getShopApplyByUserId";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
    * 申请开店
    * @paramer httpUtil 网络请求工具类
    * @paramer userId 用户Id
    * @paramer cityId 城市Id
    * @paramer shopName 店铺名
    * @paramer address 地址
    * @paramer mobile 电话号码
    * @paramer contact 联系人
    * @paramer responseHandler 请求结果回调
    * */
    public void requstApplyOpenShop(HttpUtil httpUtil, long userId, long cityId,
                                    String shopName, String address,
                                    String mobile, String contact,
                                    AsyncHttpResponseHandler responseHandler) {
        String url = "/shopApply/addShopApply";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.put(Constant.CITY_ID, cityId);
        params.put(Constant.SHOP_NAME, shopName);
        params.put(Constant.ADDRESS, address);
        params.put(Constant.MOBILE, mobile);
        params.put(Constant.CONTACT, contact);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 获取标签信息列表
    * @paramer httpUtil 网络请求工具类
    * @paramer resourceType 来源类型
    * @paramer resourceId 来源类型的Id
    * @paramer responseHandler 请求结果回调
    * */
    public void requstTagsInfo(HttpUtil httpUtil, int resourceType, long resourceId, AsyncHttpResponseHandler responseHandler) {
        String url = "/tag/getTagList";
        RequestParams params = new RequestParams();
        params.put(Constant.RESOURCE_TYPE, resourceType);
        params.put(Constant.RESOURCEID, resourceId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 保存标签信息
   * @paramer httpUtil 网络请求工具类
   * @paramer JsonObject 标签内容
   * @paramer responseHandler 请求结果回调
   * */
    public void requstSaveTagsInfo(HttpUtil httpUtil, JsonObject jsonObject, AsyncHttpResponseHandler responseHandler) {
        String url = "/tag/addUserTag";
        try {
            byte[] bytes = jsonObject.toString().getBytes("utf-8");//这样写，否则会出现乱码
            ByteArrayEntity entity = new ByteArrayEntity(bytes);
            addToken(httpUtil);
            httpUtil.post(url, entity, responseHandler);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }


    /*
  * 获取众筹项目列表
  * @paramer httpUtil 网络请求工具类
  * @paramer userId 用户Id
  * @paramer pageRows 每页显示条数
  * @paramer curPage 当前页
  * @paramer responseHandler 请求结果回调
  * */
    public void requstProjectBeanList(HttpUtil httpUtil, long userId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/project/getProjectList";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 获取某个众筹项目下的订单列表
    * @paramer httpUtil 网络请求工具类
    * @paramer projectId 众筹项目Id
    * @paramer pageRows 每页显示条数
    * @paramer receiveType  Integer取货方式 0：全部 1：堂吃 2：送货上门
    * @paramer selectStatus Integer app业务中的众筹订单状态 0:不限 1:已付款 2:待处理 3:已处理 4:无效订单
    * @paramer curPage 当前页
    * @paramer responseHandler 请求结果回调
    * */
    public void requestProjectOrderList(HttpUtil httpUtil, long projectId,
                                        int receiveType, int selectStatus,
                                        int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/cfOrder/getCfOrderList";
        RequestParams params = new RequestParams();
        params.put(Constant.PROJECT_ID, projectId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.put(Constant.RECEIVE_TYPE, receiveType);
        params.put(Constant.SELECT_STATUS, selectStatus);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
   * 获取当前用户的所有众筹订单列表
   * @paramer httpUtil 网络请求工具类
   * @paramer userId 用户(商户)Id
   * @paramer pageRows 每页显示条数
   * @paramer receiveType  Integer取货方式 0：全部 1：堂吃 2：送货上门
   * @paramer selectStatus Integer app业务中的众筹订单状态 0:不限 1:已付款 2:待处理 3:已处理 4:无效订单
   * @paramer curPage 当前页
   * @paramer responseHandler 请求结果回调
   * */
    public void requestUserProjectOrderList(HttpUtil httpUtil, long userId,
                                            int receiveType, int selectStatus,
                                            int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/cfOrder/getCfOrderList";
        RequestParams params = new RequestParams();
        params.put(Constant.BUSINESS_USER_ID, userId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.put(Constant.RECEIVE_TYPE, receiveType);
        params.put(Constant.SELECT_STATUS, selectStatus);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
  * 处理筹订单
  * @paramer httpUtil 网络请求工具类
  * @paramer cfOrderId 筹订单Id
  * @paramer responseHandler 请求结果回调
  * */
    public void requestHandlerProjectOrder(HttpUtil httpUtil, long cfOrderId, AsyncHttpResponseHandler responseHandler) {
        String url = "/cfOrder/handleCfOrder";
        RequestParams params = new RequestParams();
        params.put(Constant.CF_ORDER_ID, cfOrderId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);

    }


    /*
   * 上传图片
   * @paramer httpUtil 网络请求工具类
   * @paramer filePath 图片地址
   * @paramer responseHandler 请求结果回调
   * */
    public void requestUploadPic(HttpUtil httpUtil, String filePath, AsyncHttpResponseHandler responseHandler) {
        String url = "/picture/uploadPicture";
        RequestParams params = new RequestParams();
        try {
            File file = new File(filePath);
            InputStream inputStream = new FileInputStream(file);
            params.put(Constant.FILE, inputStream);
            params.put(Constant.PICTURE_SUFFIX, FileUtils.getFileName(filePath));
            addToken(httpUtil);
            httpUtil.setResponseTimeOut(60 * 1000);
            httpUtil.post(url, params, responseHandler);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }


    /*
  * 修改用户头像。背景图
  * @paramer httpUtil 网络请求工具类
  * @paramer filePath 图片地址
  * @paramer pictureType 图片类型，1头像，2背景图
  * @paramer responseHandler 请求结果回调
  * */
    public void requestUpdateUserPic(HttpUtil httpUtil, String filePath, int pictureType, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/uploadPicture";
        RequestParams params = new RequestParams();
        try {
            File file = new File(filePath);
            InputStream inputStream = new FileInputStream(file);
            params.put(Constant.FILE, inputStream);
            params.put(Constant.PICTURE_SUFFIX, "." + FileUtils.getFileExtension(filePath));
            params.put(Constant.PICTURE_TYPE, pictureType);
            addToken(httpUtil);
            httpUtil.post(url, params, responseHandler);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }


    /*
  * 修改昵称
  * @paramer httpUtil 网络请求工具类
  * @paramer name 昵称
  * @paramer responseHandler 请求结果回调
  * */
    public void requestModifyNickName(HttpUtil httpUtil, String name, AsyncHttpResponseHandler responseHandler) {
        String url = "/user/editUser";
        RequestParams params = new RequestParams();
        params.put(Constant.NICK_NAME, name);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
    * 获取动态列表
    * @paramer httpUtil 网络请求工具类
    * @paramer pageRows 每页显示条数
    * @paramer curPage 当前页
    * @paramer responseHandler 请求结果回调
    * */
    public void requstDynamicList(HttpUtil httpUtil, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/moment/getMomentList";
        RequestParams params = new RequestParams();
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 点赞
    * @paramer httpUtil 网络请求工具类
    * @paramer momentId 动态Id
    * @paramer responseHandler 请求结果回调
    * */
    public void requestSupport(HttpUtil httpUtil, long momentId, AsyncHttpResponseHandler responseHandler) {
        String url = "/moment/addMomentPraise";
        RequestParams params = new RequestParams();
        params.put(Constant.MOMENT_ID, momentId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 取消点赞
   * @paramer httpUtil 网络请求工具类
   * @paramer momentId 动态Id
   * @paramer responseHandler 请求结果回调
   * */
    public void requestCancelSupport(HttpUtil httpUtil, long momentId, AsyncHttpResponseHandler responseHandler) {
        String url = "/moment/removeMomentPraise";
        RequestParams params = new RequestParams();
        params.put(Constant.MOMENT_ID, momentId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 请求该动态的赞列表
    * @paramer httpUtil 网络请求工具类
    * @paramer momentId 动态ID
    * @paramer pageRows 每页显示记录数
    * @paramer curPage 当前页数
    * @paramer responseHandler 请求结果回调
    * */
    public void requestSupportList(HttpUtil httpUtil, long momentId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/moment/getMomentPraiseList";
        RequestParams params = new RequestParams();
        params.put(Constant.MOMENT_ID, momentId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 请求该动态的评论列表
    * @paramer httpUtil 网络请求工具类
    * @paramer resourceType 资源类型：2-项目,3-商品,4-动态
    * @paramer resourceId 资源ID
    * @paramer pageRows 每页显示记录数
    * @paramer curPage 当前页数
    * @paramer responseHandler 请求结果回调
    * */
    public void requestCommentList(HttpUtil httpUtil, int resourceType, long resourceId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/comment/getCommentList";
        RequestParams params = new RequestParams();
        params.put(Constant.RESOURCE_TYPE, resourceType);
        params.put(Constant.RESOURCEID, resourceId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
    * 请求热门评论
    * @paramer httpUtil 网络请求工具类
    * @paramer resourceType 资源类型：2-项目,3-商品,4-动态
    * @paramer resourceId 资源ID
    * @paramer responseHandler 请求结果回调
    * */
    public void requestHostCommentList(HttpUtil httpUtil, int resourceType,
                                       long resourceId, AsyncHttpResponseHandler responseHandler) {
        String url = "/comment/getHotCommentList";
        RequestParams params = new RequestParams();
        params.put(Constant.RESOURCE_TYPE, resourceType);
        params.put(Constant.RESOURCEID, resourceId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
    * 请求为评论点赞
    * @paramer httpUtil 网络请求工具类
    * @paramer commentId 评论ID
    * @paramer responseHandler 请求结果回调
    * */
    public void requestAddCommentSupport(HttpUtil httpUtil, long commentId, AsyncHttpResponseHandler responseHandler) {
        String url = "/comment/addCommentPraise";
        RequestParams params = new RequestParams();
        params.put(Constant.COMMENT_ID, commentId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
   * 请求为评论取消点赞
   * @paramer httpUtil 网络请求工具类
   * @paramer commentId 评论ID
   * @paramer responseHandler 请求结果回调
   * */
    public void requestCancelCommentSupport(HttpUtil httpUtil, long commentId, AsyncHttpResponseHandler responseHandler) {
        String url = "/comment/removeCommentPraise";
        RequestParams params = new RequestParams();
        params.put(Constant.COMMENT_ID, commentId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 请求添加评论
   * @paramer httpUtil 网络请求工具类
   * @paramer requestInfo 请求参数
   * @paramer responseHandler 请求结果回调
   * */
    public void requestAddComment(HttpUtil httpUtil, String requestInfo, AsyncHttpResponseHandler responseHandler) {
        String url = "/comment/addComment";
        try {
            byte[] bytes = requestInfo.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(bytes);
            addToken(httpUtil);
            httpUtil.post(url, entity, responseHandler);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }


    /*
 * 请求回复评论
 * @paramer httpUtil 网络请求工具类
 * @paramer userId 操作者ID
 * @paramer resourceType 类型2:筹项目,3:商品,4动态
 * @paramer resourceId 类型Id
 * @paramer replyUserId 被回复者的ID
 * @paramer replyNickName 被回复者的昵称
 * @paramer content 回复的内容
 * @paramer responseHandler 请求结果回调
 * */
    public void requestReplyComment(HttpUtil httpUtil, long userId, int resourceType
            , long resourceId, long replyUserId, String replyNickName
            , String content, AsyncHttpResponseHandler responseHandler) {
        String url = "/comment/addComment";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ID, userId);
        params.put(Constant.RESOURCE_TYPE, resourceType);
        params.put(Constant.RESOURCEID, resourceId);
        params.put(Constant.REPLY_USER_ID, replyUserId);
        params.put(Constant.REPLY_NICK_NAME, replyNickName);
        params.put(Constant.TAG_CONTENT, content);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
  * 请求添加动态
  * @paramer httpUtil 网络请求工具类
  * @paramer requestInfo 请求参数
  * @paramer responseHandler 请求结果回调
  * */
    public void requestAddDynamic(HttpUtil httpUtil, String requestInfo, AsyncHttpResponseHandler responseHandler) {
        String url = "/moment/addMoment";
        try {
            byte[] bytes = requestInfo.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(bytes);
            addToken(httpUtil);
            httpUtil.post(url, entity, responseHandler);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    /*
    * 请求操作者和目标用户的关注状态
    * @paramer httpUtil 网络请求工具类
    * @paramer toUserId 目标用户ID
    * @paramer responseHandler 请求结果回调
    * */
    public void requestAttention2Other(HttpUtil httpUtil, long toUserId, AsyncHttpResponseHandler responseHandler) {
        String url = "/userRelation/getUserRelation";
        RequestParams params = new RequestParams();
        params.put(Constant.TO_USER_ID, toUserId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
    * 请求用户地址列表
    * @paramer httpUtil 网络请求工具类
    * @paramer responseHandler 请求结果回调
    * */
    public void requestUserAddrList(HttpUtil httpUtil, AsyncHttpResponseHandler responseHandler) {
        String url = "/userAddress/getUserAddressList";
        RequestParams params = new RequestParams();
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 请求该众筹的关注列表
   * @paramer httpUtil 网络请求工具类
   * @paramer momentId 动态ID
   * @paramer pageRows 每页显示记录数
   * @paramer curPage 当前页数
   * @paramer responseHandler 请求结果回调
   * */
    public void requestProjectAttentionList(HttpUtil httpUtil, long projectId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/projectAttention/getProjectAttentionList";
        RequestParams params = new RequestParams();
        params.put(Constant.PROJECT_ID, projectId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
    * 请求初始化参数
    * @paramer httpUtil 网络请求工具类
    * @paramer responseHandler 请求结果回调
    * */
    public void requestInitParams(HttpUtil httpUtil, AsyncHttpResponseHandler responseHandler) {
        String url = "/system/init";
        RequestParams params = new RequestParams();
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        httpUtil.post(url, params, responseHandler);
    }


    /*
   * 请求移除地址
   * @paramer httpUtil 网络请求工具类
   * @paramer userAddressId 地址ID
   * @paramer responseHandler 请求结果回调
   * */
    public void requestRemoveAddr(HttpUtil httpUtil, long userAddressId, AsyncHttpResponseHandler responseHandler) {
        String url = "/userAddress/removeUserAddress";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ADDRESS_ID, userAddressId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
  * 请求添加地址
  * @paramer httpUtil 网络请求工具类
  * @paramerp reAddr   必选 String 前半段地址
  * @paramer subAddr   必选 String 后半段地址
  * @paramer detailAddr   可选 String 详细地址,主要是房间号
  * @paramer receiverMobile   必选 String 收货人手机
  * @paramer receiverName   必选 String 收货人
  * @paramer lonPoint   必选 Double 经度
  * @paramer latPoint   必选 Double 纬度
  * @paramer cityId   必选 Long 城市
  * @paramer responseHandler 请求结果回调
  * */
    public void requestAddAddr(HttpUtil httpUtil, String preAddr, String subAddr,
                               String detailAddr, String receiverMobile, String receiverName,
                               double lonPoint, double latPoint, long cityId,
                               AsyncHttpResponseHandler responseHandler) {
        String url = "/userAddress/addUserAddress";
        RequestParams params = new RequestParams();
        params.put(Constant.PRE_ADDR, preAddr);
        params.put(Constant.SUB_ADDR, subAddr);
        params.put(Constant.DETAIL_ADDR, detailAddr);
        params.put(Constant.RECEIVER_MOBILE, receiverMobile);
        params.put(Constant.RECEIVER_NAME, receiverName);
        params.put(Constant.LON_POINT, lonPoint);
        params.put(Constant.LAT_POINT, latPoint);
        params.put(Constant.CITY_ID, cityId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
* 请求修改地址
* @paramer httpUtil 网络请求工具类
* @paramerp reAddr   必选 String 前半段地址
* @paramer subAddr   必选 String 后半段地址
* @paramer detailAddr   可选 String 详细地址,主要是房间号
* @paramer receiverMobile   必选 String 收货人手机
* @paramer receiverName   必选 String 收货人
* @paramer lonPoint   必选 Double 经度
* @paramer latPoint   必选 Double 纬度
* @paramer cityId   必选 Long 城市
* @paramer responseHandler 请求结果回调
* */
    public void requestModifyAddr(HttpUtil httpUtil, long userAddressId, String preAddr, String subAddr,
                                  String detailAddr, String receiverMobile, String receiverName,
                                  double lonPoint, double latPoint, long cityId,
                                  AsyncHttpResponseHandler responseHandler) {
        String url = "/userAddress/editUserAddress";
        RequestParams params = new RequestParams();
        params.put(Constant.USER_ADDRESS_ID, userAddressId);
        params.put(Constant.PRE_ADDR, preAddr);
        params.put(Constant.SUB_ADDR, subAddr);
        params.put(Constant.DETAIL_ADDR, detailAddr);
        params.put(Constant.RECEIVER_MOBILE, receiverMobile);
        params.put(Constant.RECEIVER_NAME, receiverName);
        params.put(Constant.LON_POINT, lonPoint);
        params.put(Constant.LAT_POINT, latPoint);
        params.put(Constant.CITY_ID, cityId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    /*
  * 请求添加订单评论
  * @paramer httpUtil 网络请求工具类
  * @paramer requestInfo 请求参数
  * @paramer responseHandler 请求结果回调
  * */
    public void requestAddOrderComment(HttpUtil httpUtil, String requestInfo, AsyncHttpResponseHandler responseHandler) {
        String url = "/comment/addProductComment";
        try {
            byte[] bytes = requestInfo.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(bytes);
            addToken(httpUtil);
            httpUtil.post(url, entity, responseHandler);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    /*
    * 获取正在进行的众筹信息
    * @paramer httpUtil 网络请求工具类
    * @paramer responseHandler 请求结果回调
    * */
    public void requestPublishProject(HttpUtil httpUtil, AsyncHttpResponseHandler responseHandler) {
        String url = "/project/getMakingProject";
        RequestParams params = new RequestParams();
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
   * 获取项目模板
   * @paramer httpUtil 网络请求工具类
   * @paramer projectId 商品Id
   * @paramer pageRows 分页查询每页显示条数
   * @paramer curPage  当前页
   * @paramer responseHandler 请求结果回调
   * */
    public void requestTemplateList(HttpUtil httpUtil, long projectId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/template/getTemplateList";
        RequestParams params = new RequestParams();
        params.put(Constant.PROJECT_ID, projectId);
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        httpUtil.post(url, params, responseHandler);
    }

    //关注项目
    public void requestAttentionProject(HttpUtil httpUtil, long projectId, AsyncHttpResponseHandler responseHandler) {
        String url = "/projectAttention/addProjectAttention";
        RequestParams params = new RequestParams();
        params.put(Constant.PROJECT_ID, projectId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    //取消项目关注
    public void requestCancelAttentionProject(HttpUtil httpUtil, long projectId, AsyncHttpResponseHandler responseHandler) {
        String url = "/projectAttention/removeProjectAttention";
        RequestParams params = new RequestParams();
        params.put(Constant.PROJECT_ID, projectId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    //获取用户账户明细列表
    public void requestTradingDetailList(HttpUtil httpUtil,int type, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/userAccountDetail/getUserAccountDetailList";
        RequestParams params = new RequestParams();
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.put(Constant.DETAIL_TYPE, type);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        httpUtil.post(url, params, responseHandler);
    }

    //获取消息中心列表
    public void requestMsgCentreList(HttpUtil httpUtil, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/sysPush/getSysPushList";
        RequestParams params = new RequestParams();
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    //获取活动公告列表
    public void requestEventNoticeList(HttpUtil httpUtil, long cityId, int pageRows, int curPage, AsyncHttpResponseHandler responseHandler) {
        String url = "/notice/getNoticeList";
        RequestParams params = new RequestParams();
        params.put(Constant.PAGE_ROWS, pageRows);
        params.put(Constant.CUR_PAGE, curPage);
        params.put(Constant.CITY_ID, cityId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        httpUtil.post(url, params, responseHandler);
    }

    //获得某个公告详情
    public void requestNoticeInfo(HttpUtil httpUtil, long noticeId, AsyncHttpResponseHandler responseHandler) {
        String url = "/notice/getNoticeInfo";
        RequestParams params = new RequestParams();
        params.put(Constant.NOTICE_ID, noticeId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    //获得消息活动公告小红点信息
    public void requestMsgNoticeRedPointInfo(HttpUtil httpUtil, long cityId, AsyncHttpResponseHandler responseHandler) {
        String url = "/sysPush/getRedPointInfo";
        RequestParams params = new RequestParams();
        params.put(Constant.CITY_ID, cityId);
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }


    //获得订单小红点信息
    public void requestOrderRedPointInfo(HttpUtil httpUtil, AsyncHttpResponseHandler responseHandler) {
        String url = "/cfOrder/getOrderRedPoint";
        RequestParams params = new RequestParams();
        params.setElapsedFieldInJsonStreamer(null);
        params.setUseJsonStreamer(true);
        addToken(httpUtil);
        httpUtil.post(url, params, responseHandler);
    }

    /*
   * 请求提交意见反馈
   * @paramer httpUtil 网络请求工具类
   * @paramer requestInfo 请求参数
   * @paramer responseHandler 请求结果回调
   * */
    public void requestSubmitFeedback(HttpUtil httpUtil, String requestInfo, AsyncHttpResponseHandler responseHandler) {
        String url = "/feedback/addFeedback";
        try {
            byte[] bytes = requestInfo.getBytes("utf-8");
            ByteArrayEntity entity = new ByteArrayEntity(bytes);
            addToken(httpUtil);
            httpUtil.post(url, entity, responseHandler);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

}
